import { http } from '@/utils';

// 获取频道数据
export const getChannels = () => {
  return async (dispatch) => {
    // 发起请求
    const res = await http.get('/channels');
    //console.log(res);

    // 稍后发action
    dispatch({
      type: 'article/getChannels',
      payload: res.data.data.channels,
    });
  };
};

// 获取文章列表
export const getArticles = (params) => {
  return async (dispatch) => {
    // 处理数据格式

    // 组装准备查询接口的数据，目前选择驼峰命名，在action中进行和数据库字段的对接
    let queryParams = {};
    // 处理状态-不传为全部
    if (params.status !== -1) {
      queryParams.status = params.status;
    }
    // 处理频道-不传为全部
    if (params.channelId !== -1) {
      queryParams.channel_id = params.channelId;
    }
    // 日期范围-起始时间
    if (params.dateStart) {
      queryParams.begin_pubdate = params.dateStart;
    }
    // 日期范围-截止时间
    if (params.dateEnd) {
      queryParams.end_pubdate = params.dateEnd;
    }
    // 分页
    queryParams.page = params.page;
    queryParams.per_page = params.pageSize;

    // console.log('最后的查询参数', queryParams);
    // 发起请求
    const res = await http.get('/mp/articles', { params: queryParams });
    // console.log(res);
    const { results: list, total_count: total } = res.data.data;
    // console.log('list', list);
    // console.log('total', total);
    // 稍后dispatch
    dispatch({
      type: 'article/getArticles',
      payload: {
        list: list.map((item) => {
          return {
            ...item,
            cover: item.cover.images[0], // cover就是一个字符串
          };
        }),
        total: total,
      },
    });
  };
};

// 删除文章
export const deleteArticle = (id, params) => {
  return async (dispatch) => {
    // 删除文章
    await http.delete(`/mp/articles/${id}`);

    // 重新获取文章列表
    dispatch(getArticles(params));
  };
};

// 发表文章
export const publishArticle = (data) => {
  return async (dispatch) => {
    console.log('actonzhong', data);
    // 准备发表文章的数据
    const isDraft = data.publishType === 'draft' ? true : false;
    const postData = {
      title: data.values.title,
      content: data.values.content,
      channel_id: data.values.channelId,
      cover: {
        type: data.values.type,
        images: data.fileList.map((item) => item.response.data.url),
      },
    };
    // 发表文章
    console.log('格式化后的数据', postData);
    // 调用接口
    // const res = await http.post('/mp/articles?draft=false', postData);
    // const res = await http.post(`/mp/articles?draft=${isDraft}`, postData);

    if (data.articleId) {
      // 编辑
      const res = await http.put(
        `/mp/articles/${data.articleId}?draft=${isDraft}`,
        postData
      );
      console.log('编辑文章结果', res);
    } else {
      // 发布
      const res = await http.post(`/mp/articles?draft=${isDraft}`, postData);
      console.log('发布文章结果', res);
    }

    // console.log('发表文章结果', res);

    // 发送dispatch
  };
};
